/**
 * Thinking Chain Types
 * 
 * Claude 思维链可视化的类型定义
 */

/**
 * 思维步骤类型
 */
export type ThinkingStepType = 
  | 'reasoning'      // 推理过程
  | 'tool_use'       // 工具使用
  | 'retrieval'      // 知识检索
  | 'analysis'       // 分析过程
  | 'planning'       // 计划制定
  | 'conclusion'     // 结论总结
  | 'reflection';    // 反思评估

/**
 * 思维步骤
 */
export interface ThinkingStep {
  /** 步骤唯一标识 */
  id: string;
  /** 步骤类型 */
  type: ThinkingStepType;
  /** 步骤标题 */
  title: string;
  /** 步骤内容 */
  content: string;
  /** 时间戳（毫秒） */
  timestamp: number;
  /** 持续时间（毫秒） */
  duration?: number;
  /** 置信度 (0-1) */
  confidence?: number;
  /** 相关工具 */
  tool?: {
    name: string;
    input?: any;
    output?: any;
  };
  /** 子步骤 */
  children?: ThinkingStep[];
  /** 元数据 */
  metadata?: Record<string, any>;
}

/**
 * 思维链
 */
export interface ThinkingChain {
  /** 思维链唯一标识 */
  id: string;
  /** 消息 ID */
  messageId: string;
  /** 所有步骤 */
  steps: ThinkingStep[];
  /** 总耗时（毫秒） */
  totalDuration: number;
  /** 开始时间 */
  startTime: Date;
  /** 结束时间 */
  endTime?: Date;
  /** 摘要 */
  summary?: string;
  /** 是否完成 */
  completed: boolean;
}

/**
 * 思维流事件
 */
export interface ThinkingStreamEvent {
  /** 事件类型 */
  type: 'start' | 'step' | 'complete' | 'error';
  /** 步骤数据 */
  step?: ThinkingStep;
  /** 错误信息 */
  error?: string;
  /** 时间戳 */
  timestamp: number;
}

/**
 * 思维链可视化配置
 */
export interface ThinkingVisualizationConfig {
  /** 是否显示时间线 */
  showTimeline: boolean;
  /** 是否显示持续时间 */
  showDuration: boolean;
  /** 是否显示置信度 */
  showConfidence: boolean;
  /** 是否显示工具调用 */
  showToolCalls: boolean;
  /** 是否自动展开 */
  autoExpand: boolean;
  /** 动画速度（毫秒） */
  animationSpeed: number;
  /** 主题 */
  theme: 'light' | 'dark' | 'auto';
}

/**
 * 思维链统计
 */
export interface ThinkingChainStats {
  /** 总步骤数 */
  totalSteps: number;
  /** 各类型步骤数量 */
  stepsByType: Record<ThinkingStepType, number>;
  /** 平均步骤时长 */
  averageStepDuration: number;
  /** 最长步骤 */
  longestStep?: ThinkingStep;
  /** 工具调用次数 */
  toolCallCount: number;
}

/**
 * 思维链导出格式
 */
export type ThinkingChainExportFormat = 'json' | 'markdown' | 'mermaid' | 'text';

/**
 * 思维流程图节点
 */
export interface ThinkingFlowNode {
  /** 节点 ID */
  id: string;
  /** 节点类型 */
  type: ThinkingStepType;
  /** 节点标签 */
  label: string;
  /** 节点数据 */
  data: ThinkingStep;
  /** 位置 */
  position?: { x: number; y: number };
}

/**
 * 思维流程图边
 */
export interface ThinkingFlowEdge {
  /** 边 ID */
  id: string;
  /** 源节点 */
  source: string;
  /** 目标节点 */
  target: string;
  /** 边标签 */
  label?: string;
  /** 是否条件边 */
  conditional?: boolean;
}

/**
 * 思维流程图
 */
export interface ThinkingFlowGraph {
  /** 流程图 ID */
  id: string;
  /** 节点列表 */
  nodes: ThinkingFlowNode[];
  /** 边列表 */
  edges: ThinkingFlowEdge[];
}

